package org.mx.service.rest.vo;

import org.mx.error.UserInterfaceError;
import org.mx.error.UserInterfaceException;

import lombok.Getter;
import lombok.Setter;

/**
 * REST返回的基础数据值对象
 * 
 * @param <T> 泛型定义
 *
 * @author : john.peng date : 2017/10/6
 */
@Getter
@Setter
public class DataVO<T> {
	private int errorCode;
	private String errorMessage;
	private T data;

	/**
	 * 默认的构造函数
	 */
	public DataVO() {
		this.errorCode = 0;
		this.errorMessage = null;
	}

	/**
	 * 默认的构造函数
	 *
	 * @param data 数据对象
	 */
	public DataVO(T data) {
		this.errorCode = 0;
		this.errorMessage = null;
		this.errorCode = 0;
		this.errorMessage = null;
		this.data = data;
	}

	/**
	 * 默认的构造函数
	 *
	 * @param errorCode    错误代码
	 * @param errorMessage 错误消息
	 */
	public DataVO(int errorCode, String errorMessage) {
		this.errorCode = 0;
		this.errorMessage = null;
		this.errorCode = errorCode;
		this.errorMessage = errorMessage;
	}

	/**
	 * 默认的构造函数
	 *
	 * @param error 人机界面错误
	 */
	public DataVO(UserInterfaceError error) {
		this(error.getErrorCode(), error.getErrorMessage());
	}

	/**
	 * 默认的构造函数
	 *
	 * @param exception 人机界面异常
	 */
	public DataVO(UserInterfaceException exception) {
		this(exception.getErrorCode(), exception.getErrorMessage());
	}
}
